package com.eddie.state;

import java.util.Random;

/**
 * 可以抽奖的状态
 *
 * @author Administrator
 */
public class CanRaffleState extends State {

    RaffleActivity activity;

    public CanRaffleState(RaffleActivity activity) {
        this.activity = activity;
    }

    //已经扣除过积分，不能再扣了
    @Override
    public void deductMoney() {
        System.out.println("已经扣除过积分");
    }

    //可以抽奖了，抽完后根据实际情况（抽中-没抽中）改变新状态
    @Override
    public boolean raffle() {
        System.out.println("正在抽奖，请稍等!");
        Random r = new Random();
        int num = r.nextInt(10);
        // 10%机会抽中奖品
        if (num == 0) {
            // 改变活动状态为发放奖品context
            activity.setState(activity.getDispenseState());
            return true;
        } else {
            System.out.println("很遗憾没有抽中奖品");
            // 改变活动状态为不能抽奖
            activity.setState(activity.getNoRafflleState());
            return false;
        }
    }

    // 没中奖不能发放奖品，因为当前处于抽奖中状态，只有在发放奖品（抽中状态）才可以发放奖品
    @Override
    public void dispensePrize() {
        System.out.println("没中奖，不能发放奖品");
    }
}
